package com.haoyeteng.sxbd.core.common.constant.factory;

import java.util.Date;
import java.util.List;

/**
 * 常量生产工厂的接口
 *
 * @author haoyeteng
 * @date 2017-06-14 21:12
 */
public interface IConstantFactory {

	/**
	 * 根据用户id获取用户名称
	 *
	 * @author haoyeteng
	 * @Date 2017/5/9 23:41
	 */
	// String getAdminNameById(Integer adminId);

	/**
	 * 根据用户id获取用户账号
	 *
	 * @author haoyeteng
	 * @date 2017年5月16日21:55:371
	 */
	String getAdminAccountById(Integer adminId);

	/**
	 * 通过角色id获取角色名称
	 */
	String getSingleRoleName(Integer roleId);

	/**
	 * 通过角色id获取角色英文名称
	 */
	String getSingleRoleTip(Integer roleId);

	/**
	 * 获取菜单的名称们(多个)
	 */
	String getMenuNames(String menuIds);

	/**
	 * 获取菜单名称
	 */
	String getMenuName(Long menuId);

	/**
	 * 获取菜单名称通过编号
	 */
	String getMenuNameByCode(String code);

	/**
	 * 获取性别名称
	 */
	String getSexName(Integer sex);

	/**
	 * 获取用户登录状态
	 */
	String getStatusName(Integer status);

	/**
	 * 获取菜单状态
	 */
	String getMenuStatusName(Integer status);

	/**
	 * 获取被缓存的对象(用户删除业务)
	 */
	String getCacheObject(String para);

	/**
	 * 获取年龄
	 * 
	 * @param object
	 * @return
	 */
	String getAge(Date birthDate);

	/**
	 * 通过角色ids获取角色名称
	 */
	String getRoleName(String roleIds);

	/**
	 * 获取资质认证的状态
	 * 
	 * @param authState
	 * @return
	 */
	String getAuthState(Integer authState);

	/**
	 * 获取测绘资质等级
	 * 
	 * @param mappingGrade
	 * @return
	 */
	String getMappingGrade(Integer mappingGrade);

	/**
	 * 获取机构类型(0:测绘资质单位,1政府单位（无资质）,2政府单位（无资质）,3.高校/科研所（无资质）,4.其他非测绘资质执证单位)
	 * 
	 * @param organType
	 * @return
	 */
	String getOrganType(Integer organType);

	/**
	 * 获取申请类型(0.法定代表人申请;1.经办人申请)
	 * 
	 * @param applyType
	 * @return
	 */
	String getApplyType(Integer applyType);

	/**
	 * 获得发票类型
	 * 
	 * @param billType
	 * @return
	 */
	String getBillType(Integer billType);

	/**
	 * 获得开具类型
	 * 
	 * @param OpererType
	 * @return
	 */
	String getOpererType(Integer OpererType);

	/**
	 * 获得审核状态
	 * 
	 * @param billStata
	 * @return
	 */
	String getBillState(Integer billState);

	/**
	 * 获取设备申请状态
	 * 
	 * @param applyState
	 * @return
	 */
	Object getApplyStateName(Integer applyState);

	/**
	 * 获取账号绑定状态
	 * 
	 * @param bindingState
	 * @return
	 */
	Object getBindingStateName(Integer bindingState);

	/**
	 * 获取购买时长，不足一年显示月，超过一年显示年月
	 * 
	 * @param payTime
	 * @return
	 */
	Object getPayTimeName(Integer payTime);

	/**
	 * 根据开始时间和购买时长获取剩余时长（天）
	 * 
	 * @param payTime
	 * @param startTime
	 * @return
	 */
	Object getSurplusTimeName(Integer payTime, Date startTime);
	

	/**
	 * 去除html样式
	 * 
	 * @param content
	 * @return
	 */
	String delHTMLStyle(String content);

	/**
	 * 获取消息类型
	 * 
	 * @param msgType
	 * @return
	 */
	String getMsgType(Integer msgType);

	/**
	 * 是否已读
	 */
	String getIfRead(Integer ifRead);

	/**
	 * 根据消息类型发送消息
	 * 
	 * @param configName
	 * @param msgContent
	 */
	void toSendUserMsg(String configName, String content, Integer userId);

	/**
	 * 发送消息
	 * @param configName
	 * @param content
	 */
	void toSendAdminMsg(String configName, String content);
	
	/**
	 * 查询未读消息的个数
	 * @return
	 */
	int getMsgCount();
}
